๋ ๊ฐ์ง ํ์ ์ง๋ ฌ ํต์ ํ๋กํ ์ฝ์ธ UART์ SPI๋ฅผ ํ๊ตฌํฉ๋๋ค. ์๋ฒ ๋๋ ์์คํ ๋ฐ ๊ทธ ์ด์์์ ์ด๋ค์ ์๋ฆฌ, ์ฐจ์ด์ , ์์ฉ ๋ถ์ผ, ์ฅ๋จ์ ์ ์ดํดํ์ฌ ํ์ฉ๋๋ฅผ ๋์ฌ๋ณด์ธ์.
์ง๋ ฌ ํต์ ์์ ์ ๋ณต: UART์ SPI ์ฌ์ธต ๋ถ์
์ ์๊ณตํ ๋ฐ ์๋ฒ ๋๋ ์์คํ ์ ์ธ๊ณ์์ ์ฅ์น ๊ฐ ํต์ ๋ฅ๋ ฅ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ง๋ ฌ ํต์ ์ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ, ์ผ์, ์ฃผ๋ณ ์ฅ์น, ์ฌ์ง์ด ์ปดํจํฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ง๋ ฌ ํต์ ํ๋กํ ์ฝ ์ค ๋ ๊ฐ์ง๋ UART(Universal Asynchronous Receiver/Transmitter)์ SPI(Serial Peripheral Interface)์ ๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ UART์ SPI์ ๋ณต์กํ ๋ถ๋ถ์ ๋ํด ์ฌ์ธต์ ์ผ๋ก ๋ค๋ฃจ๊ณ , ์ด๋ค์ ์๋ฆฌ, ์ฐจ์ด์ , ์์ฉ ๋ถ์ผ, ์ฅ์ ๋ฐ ๋จ์ ์ ํ๊ตฌํ ๊ฒ์ ๋๋ค.
์ง๋ ฌ ํต์ ์ดํดํ๊ธฐ
์ง๋ ฌ ํต์ ์ ์ฌ๋ฌ ๊ฐ์ ์์ด์ด๋ฅผ ํตํด ๋์์ ์ฌ๋ฌ ๋นํธ๋ฅผ ์ ์กํ๋ ๋ณ๋ ฌ ํต์ ๊ณผ ๋ฌ๋ฆฌ, ๋จ์ผ ์์ด์ด(๋๋ ์ ์ด ์ ํธ๋ฅผ ์ํ ๋ช ๊ฐ์ ์์ด์ด)๋ฅผ ํตํด ํ ๋ฒ์ ํ ๋นํธ์ฉ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ์์ ๋๋ค. ๋ณ๋ ฌ ํต์ ์ ๋จ๊ฑฐ๋ฆฌ์์ ๋ ๋น ๋ฅด์ง๋ง, ์ง๋ ฌ ํต์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฅ๊ฑฐ๋ฆฌ ๋ฐ ์์ด์ด ์๋ฅผ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํ ์ํฉ์์ ์ ํธ๋ฉ๋๋ค. ์ด๋ ๊ณต๊ฐ๊ณผ ๋น์ฉ์ด ์ข ์ข ์ค์ํ ์ ์ฝ์ด ๋๋ ์๋ฒ ๋๋ ์์คํ ์ ์ด์์ ์ ๋๋ค.
๋น๋๊ธฐ ํต์ vs. ๋๊ธฐ ํต์
์ง๋ ฌ ํต์ ์ ํฌ๊ฒ ๋น๋๊ธฐ์๊ณผ ๋๊ธฐ์ ๋ ๊ฐ์ง ๋ฒ์ฃผ๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค. UART์ ๊ฐ์ ๋น๋๊ธฐ์ ํต์ ์ ์ก์ ์์ ์์ ์ ์ฌ์ด์ ๊ณต์ ํด๋ก ์ ํธ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๋์ , ๊ฐ ๋ฐ์ดํฐ ๋ฐ์ดํธ๋ฅผ ํ๋ ์ํํ๊ธฐ ์ํด ์์ ๋นํธ์ ์ ์ง ๋นํธ์ ์์กดํฉ๋๋ค. SPI ๋ฐ I2C์ ๊ฐ์ ๋๊ธฐ์ ํต์ ์ ๊ณต์ ํด๋ก ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฅ์น ๊ฐ ๋ฐ์ดํฐ ์ ์ก์ ๋๊ธฐํํฉ๋๋ค.
UART: ๋ฒ์ฉ ๋น๋๊ธฐ ์ก์์ ๊ธฐ
UART๋ ์ฃผ๋ก ๋จ์์ฑ๊ณผ ์ ์ฐ์ฑ ๋๋ฌธ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ง๋ ฌ ํต์ ํ๋กํ ์ฝ์ ๋๋ค. ์ด๋ ๋น๋๊ธฐ์ ํ๋กํ ์ฝ๋ก, ์ก์ ์์ ์์ ์๊ฐ ๊ณตํต ํด๋ก ์ ํธ๋ฅผ ๊ณต์ ํ์ง ์๋๋ค๋ ์๋ฏธ์ ๋๋ค. ์ด๋ ํ๋์จ์ด ์๊ตฌ ์ฌํญ์ ๋จ์ํํ์ง๋ง, ์ ๋ฐํ ํ์ด๋ฐ๊ณผ ์ฌ์ ์ ํฉ์๋ ๋ฐ์ดํฐ ์๋(๋ณด๋์จ)๊ฐ ํ์ํฉ๋๋ค.
UART ์๋ฆฌ
UART ํต์ ์ ๋ค์์ผ๋ก ๊ตฌ์ฑ๋ ํ๋ ์ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค:
- ์์ ๋นํธ: ์ ๋ฐ์ดํฐ ํ๋ ์์ ์์์ ๋ํ๋ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฎ์(0) ์ ํธ์ ๋๋ค.
- ๋ฐ์ดํฐ ๋นํธ: ์ ์ก๋๋ ์ค์ ๋ฐ์ดํฐ๋ก, ์ผ๋ฐ์ ์ผ๋ก 8๋นํธ(1๋ฐ์ดํธ)์ด์ง๋ง 5, 6, ๋๋ 7๋นํธ์ผ ์๋ ์์ต๋๋ค.
- ํจ๋ฆฌํฐ ๋นํธ (์ ํ ์ฌํญ): ์ค๋ฅ ๊ฐ์ง์ ์ฌ์ฉ๋ฉ๋๋ค. ์ง์, ํ์ ๋๋ ์์์ผ ์ ์์ต๋๋ค.
- ์ ์ง ๋นํธ: ๋ฐ์ดํฐ ํ๋ ์์ ๋์ ๋ํ๋ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋์(1) ์ ํธ์ ๋๋ค. ํ๋ ๊ฐ์ ์ ์ง ๋นํธ๊ฐ ํํ ์ฌ์ฉ๋ฉ๋๋ค.
์ฑ๊ณต์ ์ธ ํต์ ์ ์ํด ์ก์ ์์ ์์ ์๋ ๋ณด๋์จ, ๋ฐ์ดํฐ ๋นํธ, ํจ๋ฆฌํฐ, ์ ์ง ๋นํธ์ ๋ํด ํฉ์ํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๋ณด๋์จ๋ก๋ 9600, 115200 ๋ฑ์ด ์์ต๋๋ค. ๋ณด๋์จ์ด ๋์์๋ก ๋ฐ์ดํฐ ์ ์ก ์๋๋ ๋นจ๋ผ์ง์ง๋ง, ํ์ด๋ฐ ์ค๋ฅ์ ๋ํ ๋ฏผ๊ฐ๋๋ ์ฆ๊ฐํฉ๋๋ค.
UART ์์ฉ ๋ถ์ผ
- ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ๋ฅผ ์ปดํจํฐ์ ์ฐ๊ฒฐ: UART๋ ํ๋ก๊ทธ๋๋ฐ, ๋๋ฒ๊น ๋ฐ ๋ฐ์ดํฐ ๋ก๊น ์ ์ํด ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ(์๋์ด๋ ธ ๋๋ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด์ ๊ฐ์)์ ์ปดํจํฐ ์ฌ์ด์ ์ง๋ ฌ ์ฐ๊ฒฐ์ ์ค์ ํ๋ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- GPS ๋ชจ๋: ๋ง์ GPS ๋ชจ๋์ UART๋ฅผ ์ฌ์ฉํ์ฌ ์์น ๋ฐ์ดํฐ๋ฅผ ํธ์คํธ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ ๋๋ ์ปดํจํฐ๋ก ์ ์กํฉ๋๋ค.
- ๋ธ๋ฃจํฌ์ค ๋ชจ๋: ๋ธ๋ฃจํฌ์ค ๋ชจ๋์ ์ข ์ข UART๋ฅผ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์์ ํต์ ์ธํฐํ์ด์ค๋ก ์ฌ์ฉํฉ๋๋ค.
- ์ง๋ ฌ ํ๋ฆฐํฐ: ๊ตฌํ ์ง๋ ฌ ํ๋ฆฐํฐ๋ ์ธ์ ๋ช ๋ น ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ๋ฐ UART๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ฝ์ ์ถ๋ ฅ: ์๋ฒ ๋๋ ์์คํ ์ ์ข ์ข UART๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฒ๊น ์ ๋ณด ๋ฐ ์ํ ๋ฉ์์ง๋ฅผ ์ง๋ ฌ ์ฝ์๋ก ์ถ๋ ฅํฉ๋๋ค.
UART ์ฅ์
- ๋จ์์ฑ: UART๋ ํ๋์จ์ด์ ์ํํธ์จ์ด ๋ชจ๋์์ ๋น๊ต์ ๊ตฌํํ๊ธฐ ๊ฐ๋จํฉ๋๋ค.
- ์ ์ฐ์ฑ: UART๋ ๋ค์ํ ๋ฐ์ดํฐ ์๋, ๋ฐ์ดํฐ ๋นํธ ๊ธธ์ด ๋ฐ ํจ๋ฆฌํฐ ์ต์ ์ ์ง์ํฉ๋๋ค.
- ๋๋ฆฌ ์ง์๋จ: UART๋ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด ๊ตฌํ์ด ์ฉ์ดํ๋ฉฐ ๋๋ฆฌ ์ง์๋๋ ํ์ค์ ๋๋ค.
- ํด๋ก ์ ํธ ๋ถํ์: ํ์ํ ์์ด์ด ์๋ฅผ ์ค์ฌ์ค๋๋ค.
UART ๋จ์
- ๋ฎ์ ์๋: SPI์ ๊ฐ์ ๋๊ธฐ์ ํ๋กํ ์ฝ์ ๋นํด UART๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ์ ์ก ์๋๊ฐ ๋ฎ์ต๋๋ค.
- ์ค๋ฅ ๋ฏผ๊ฐ์ฑ: ์์ ์ ์ธ ํด๋ก ์ ํธ ์์ด UART๋ ํ์ด๋ฐ ์ค๋ฅ ๋ฐ ๋ฐ์ดํฐ ์์์ ๋ ์ทจ์ฝํฉ๋๋ค. ํจ๋ฆฌํฐ ๋นํธ๊ฐ ๋์์ด ๋ ์ ์์ง๋ง, ์ค๋ฅ ์๋ ํต์ ์ ๋ณด์ฅํ์ง๋ ์์ต๋๋ค.
- ๋ ์ฅ์น๋ก ์ ํ: UART๋ ์ฃผ๋ก ๋ ์ฅ์น ๊ฐ์ ์ ๋์ (point-to-point) ํต์ ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ๋ฉํฐํ๋ ์ฑ์ ํตํด ๋จ์ผ UART ๋ฒ์ค์ ์ฌ๋ฌ ์ฅ์น๋ฅผ ์ฐ๊ฒฐํ ์ ์์ง๋ง, ์ด๋ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํต๋๋ค.
UART ์์: ์๋์ด๋ ธ์ ์๋ฆฌ์ผ ๋ชจ๋ํฐ
UART์ ์ผ๋ฐ์ ์ธ ์์๋ ์๋์ด๋ ธ IDE์ ์๋ฆฌ์ผ ๋ชจ๋ํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์๋์ด๋ ธ ๋ณด๋์๋ USB๋ฅผ ํตํด ์ปดํจํฐ์ ํต์ ํ ์ ์๋ ๋ด์ฅ UART ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค. ๋ค์ ์๋์ด๋ ธ ์ฝ๋ ์ค๋ํซ์ ์๋ฆฌ์ผ ๋ชจ๋ํฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค:
void setup() {
Serial.begin(9600); // 9600 ๋ณด๋์จ๋ก ์๋ฆฌ์ผ ํต์ ์ด๊ธฐํ
}
void loop() {
Serial.println("Hello, world!"); // "Hello, world!" ๋ฉ์์ง๋ฅผ ์๋ฆฌ์ผ ๋ชจ๋ํฐ๋ก ์ ์ก
delay(1000); // 1์ด ๋๊ธฐ
}
์ด ๊ฐ๋จํ ์ฝ๋๋ ๋งค์ด "Hello, world!" ๋ฉ์์ง๋ฅผ ์๋ฆฌ์ผ ๋ชจ๋ํฐ๋ก ๋ณด๋
๋๋ค. Serial.begin(9600) ํจ์๋ ์๋ฆฌ์ผ ๋ชจ๋ํฐ์ ์ค์ ๊ณผ ์ผ์นํด์ผ ํ๋ 9600 ๋ณด๋์จ๋ก UART ์ธํฐํ์ด์ค๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
SPI: ์ง๋ ฌ ์ฃผ๋ณ ์ฅ์น ์ธํฐํ์ด์ค
SPI(Serial Peripheral Interface)๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์ ์ฃผ๋ณ ์ฅ์น ๊ฐ์ ๋จ๊ฑฐ๋ฆฌ ํต์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋๊ธฐ์ ์ง๋ ฌ ํต์ ํ๋กํ ์ฝ์ ๋๋ค. ๋์ ์๋์ ๋น๊ต์ ๊ฐ๋จํ ํ๋์จ์ด ์๊ตฌ ์ฌํญ์ผ๋ก ์ ์๋ ค์ ธ ์์ต๋๋ค.
SPI ์๋ฆฌ
SPI๋ ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ํ๋์ ์ฅ์น(๋ง์คํฐ)๊ฐ ํต์ ์ ์ ์ดํ๊ณ ํ๋ ์ด์์ ์ฅ์น(์ฌ๋ ์ด๋ธ)๊ฐ ๋ง์คํฐ์ ๋ช ๋ น์ ์๋ตํฉ๋๋ค. SPI ๋ฒ์ค๋ ๋ค ๊ฐ์ง ์ฃผ์ ์ ํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- MOSI (Master Out Slave In): ๋ง์คํฐ์์ ์ฌ๋ ์ด๋ธ๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ.
- MISO (Master In Slave Out): ์ฌ๋ ์ด๋ธ์์ ๋ง์คํฐ๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ.
- SCK (Serial Clock): ๋ง์คํฐ๊ฐ ์์ฑํ๋ ํด๋ก ์ ํธ๋ก, ๋ฐ์ดํฐ ์ ์ก ๋๊ธฐํ์ ์ฌ์ฉ๋ฉ๋๋ค.
- SS/CS (Slave Select/Chip Select): ๋ง์คํฐ๊ฐ ํต์ ํ ํน์ ์ฌ๋ ์ด๋ธ ์ฅ์น๋ฅผ ์ ํํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ ํธ์ ๋๋ค. ๊ฐ ์ฌ๋ ์ด๋ธ ์ฅ์น๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฒด ์ ์ฉ SS/CS ๋ผ์ธ์ ๊ฐ์ง๋๋ค.
๋ฐ์ดํฐ๋ ํด๋ก ์ ํธ์ ๋๊ธฐ์ ์ผ๋ก ์ ์ก๋ฉ๋๋ค. ๋ง์คํฐ๋ ์ํ๋ ์ฌ๋ ์ด๋ธ์ SS/CS ๋ผ์ธ์ ๋ฎ๊ฒ(low) ๋น๊ฒจ ํต์ ์ ์์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ MOSI ๋ผ์ธ์์ ๋ง์คํฐ๋ก๋ถํฐ ๋ฐ์ดํฐ๊ฐ ์ํํธ๋์ด SCK ์ ํธ์ ์์น ๋๋ ํ๊ฐ ์์ง์์ ์ฌ๋ ์ด๋ธ๋ก ๋ค์ด๊ฐ๋๋ค. ๋์์ MISO ๋ผ์ธ์์ ์ฌ๋ ์ด๋ธ๋ก๋ถํฐ ๋ฐ์ดํฐ๊ฐ ์ํํธ๋์ด ๋ง์คํฐ๋ก ๋ค์ด๊ฐ๋๋ค. ์ด๋ ์๋ฐฉํฅ ๋์ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ ์ ์ด์ค ํต์ ์ ํ์ฉํฉ๋๋ค.
SPI ๋ชจ๋
SPI๋ ํด๋ก ๊ทน์ฑ(CPOL)๊ณผ ํด๋ก ์์(CPHA)์ด๋ผ๋ ๋ ๊ฐ์ง ๋งค๊ฐ๋ณ์์ ์ํด ๊ฒฐ์ ๋๋ ๋ค ๊ฐ์ง ์๋ ๋ชจ๋๋ฅผ ๊ฐ์ง๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ค์ ์ ํด ์ํ์ผ ๋์ SCK ์ ํธ ์ํ์ ๋ฐ์ดํฐ๊ฐ ์ํ๋ง๋๊ณ ์ํํธ๋๋ SCK ์ ํธ์ ์์ง๋ฅผ ์ ์ํฉ๋๋ค.
- ๋ชจ๋ 0 (CPOL=0, CPHA=0): ์ ํด ์ํ์ผ ๋ SCK๋ ๋ฎ์ต๋๋ค. ๋ฐ์ดํฐ๋ ์์น ์์ง์์ ์ํ๋ง๋๊ณ ํ๊ฐ ์์ง์์ ์ํํธ๋ฉ๋๋ค.
- ๋ชจ๋ 1 (CPOL=0, CPHA=1): ์ ํด ์ํ์ผ ๋ SCK๋ ๋ฎ์ต๋๋ค. ๋ฐ์ดํฐ๋ ํ๊ฐ ์์ง์์ ์ํ๋ง๋๊ณ ์์น ์์ง์์ ์ํํธ๋ฉ๋๋ค.
- ๋ชจ๋ 2 (CPOL=1, CPHA=0): ์ ํด ์ํ์ผ ๋ SCK๋ ๋์ต๋๋ค. ๋ฐ์ดํฐ๋ ํ๊ฐ ์์ง์์ ์ํ๋ง๋๊ณ ์์น ์์ง์์ ์ํํธ๋ฉ๋๋ค.
- ๋ชจ๋ 3 (CPOL=1, CPHA=1): ์ ํด ์ํ์ผ ๋ SCK๋ ๋์ต๋๋ค. ๋ฐ์ดํฐ๋ ์์น ์์ง์์ ์ํ๋ง๋๊ณ ํ๊ฐ ์์ง์์ ์ํํธ๋ฉ๋๋ค.
์ฑ๊ณต์ ์ธ ํต์ ์ ์ํด ๋ง์คํฐ ๋ฐ ์ฌ๋ ์ด๋ธ ์ฅ์น๋ ๋์ผํ SPI ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์์๋๊ฑฐ๋ ํต์ ์ด ์คํจํฉ๋๋ค.
SPI ์์ฉ ๋ถ์ผ
- ๋ฉ๋ชจ๋ฆฌ ์นด๋ (SD ์นด๋, microSD ์นด๋): SPI๋ ์๋ฒ ๋๋ ์์คํ ์์ ๋ฉ๋ชจ๋ฆฌ ์นด๋์ ์ธํฐํ์ด์คํ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ผ์: ๊ฐ์๋๊ณ, ์์ด๋ก์ค์ฝํ, ์จ๋ ์ผ์์ ๊ฐ์ ๋ง์ ์ผ์๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํด SPI๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋์คํ๋ ์ด: SPI๋ LCD ๋ฐ OLED ๋์คํ๋ ์ด๋ฅผ ์ ์ดํ๋ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ์๋ ๋ก๊ทธ-๋์งํธ ๋ณํ๊ธฐ(ADC) ๋ฐ ๋์งํธ-์๋ ๋ก๊ทธ ๋ณํ๊ธฐ(DAC): SPI๋ ๋ฐ์ดํฐ ์์ง ๋ฐ ์ ์ด ์์ฉ ํ๋ก๊ทธ๋จ์์ ADC ๋ฐ DAC์ ํต์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ํํธ ๋ ์ง์คํฐ: SPI๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋์งํธ I/O ํ์ ์๋ฅผ ํ์ฅํ๊ธฐ ์ํด ์ํํธ ๋ ์ง์คํฐ๋ฅผ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
SPI ์ฅ์
- ๊ณ ์: SPI๋ UART์ ๋นํด ํจ์ฌ ๋์ ๋ฐ์ดํฐ ์ ์ก ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ ์ด์ค ํต์ : ๋ฐ์ดํฐ๋ ์๋ฐฉํฅ์ผ๋ก ๋์์ ์ ์ก๋ ์ ์์ต๋๋ค.
- ์ฌ๋ฌ ์ฌ๋ ์ด๋ธ: ๋จ์ผ ๋ง์คํฐ๊ฐ ์ฌ๋ฌ ์ฌ๋ ์ด๋ธ ์ฅ์น์ ํต์ ํ ์ ์์ต๋๋ค.
- ๋น๊ต์ ๊ฐ๋จํ ํ๋์จ์ด: SPI๋ ๋จ 4๊ฐ์ ์์ด์ด(๊ฐ ์ฌ๋ ์ด๋ธ ์ฅ์น๋น ํ๋์ SS/CS ๋ผ์ธ ์ถ๊ฐ)๋ง ํ์ํฉ๋๋ค.
SPI ๋จ์
- ์ฃผ์ ์ง์ ๋ฐฉ์ ์์: SPI๋ ์ฌ๋ ์ด๋ธ ์ฅ์น๋ฅผ ์ ํํ๊ธฐ ์ํด SS/CS ๋ผ์ธ์ ์์กดํ๋ฏ๋ก, ์ฌ๋ ์ด๋ธ ์๊ฐ ๋ง์์ง๋ฉด ๋ฒ๊ฑฐ๋ก์์ง ์ ์์ต๋๋ค.
- ๋จ๊ฑฐ๋ฆฌ: SPI๋ ๊ณ ์์์์ ์ ํธ ์ ํ๋ก ์ธํด ์ผ๋ฐ์ ์ผ๋ก ๋จ๊ฑฐ๋ฆฌ๋ก ์ ํ๋ฉ๋๋ค.
- ์ค๋ฅ ๊ฐ์ง ์์: SPI์๋ ๋ด์ฅ๋ ์ค๋ฅ ๊ฐ์ง ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ์ค๋ฅ ๊ฒ์ฌ๋ ์ํํธ์จ์ด์์ ๊ตฌํํด์ผ ํฉ๋๋ค.
- ๋ ๋ณต์กํ ์ํํธ์จ์ด ๊ตฌํ: ํ๋์จ์ด๋ ๋น๊ต์ ๊ฐ๋จํ์ง๋ง, ํนํ ์ฌ๋ฌ ์ฌ๋ ์ด๋ธ ๋ฐ ๋ค๋ฅธ SPI ๋ชจ๋๋ฅผ ๋ค๋ฃฐ ๋ ์ํํธ์จ์ด ๊ตฌํ์ด UART๋ณด๋ค ๋ ๋ณต์กํ ์ ์์ต๋๋ค.
SPI ์์: ๊ฐ์๋๊ณ ์ธํฐํ์ด์ค
์ธ๊ธฐ ์๋ ADXL345์ ๊ฐ์ ๋ง์ ๊ฐ์๋๊ณ๋ ํต์ ์ ์ํด SPI๋ฅผ ์ฌ์ฉํฉ๋๋ค. ADXL345์์ ๊ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ผ๋ ค๋ฉด ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ(๋ง์คํฐ ์ญํ )๋ ์ ์ ํ ๋ ์ง์คํฐ๋ฅผ ์ฝ๊ธฐ ์ํด ๊ฐ์๋๊ณ(์ฌ๋ ์ด๋ธ ์ญํ )์ ๋ช ๋ น์ ๋ณด๋ด์ผ ํฉ๋๋ค. ๋ค์ ์์ฌ ์ฝ๋๋ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฌ์ค๋๋ค:
- ADXL345์ SS/CS ๋ผ์ธ์ ๋ฎ๊ฒ(low) ๋น๊ฒจ ADXL345๋ฅผ ์ ํํฉ๋๋ค.
- ์ฝ์ ๋ ์ง์คํฐ ์ฃผ์๋ฅผ ์ ์กํฉ๋๋ค(์: X์ถ ๊ฐ์๋ ๋ฐ์ดํฐ์ ์ฃผ์).
- MISO ๋ผ์ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค(X์ถ ๊ฐ์๋ ๊ฐ).
- Y์ถ๊ณผ Z์ถ์ ๋ํด 2๋จ๊ณ์ 3๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
- ADXL345์ SS/CS ๋ผ์ธ์ ๋๊ฒ(high) ๋น๊ฒจ ADXL345๋ฅผ ์ ํ ํด์ ํฉ๋๋ค.
ํน์ ๋ช ๋ น ๋ฐ ๋ ์ง์คํฐ ์ฃผ์๋ ๊ฐ์๋๊ณ ๋ชจ๋ธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ ํํ ์ ์ฐจ๋ ํญ์ ๋ฐ์ดํฐ์ํธ๋ฅผ ์ฐธ์กฐํด์ผ ํฉ๋๋ค.
UART vs. SPI: ๋น๊ต
๋ค์์ UART์ SPI์ ์ฃผ์ ์ฐจ์ด์ ์ ์์ฝํ ํ์ ๋๋ค:
| ํน์ง | UART | SPI |
|---|---|---|
| ํต์ ์ ํ | ๋น๋๊ธฐ์ | ๋๊ธฐ์ |
| ํด๋ก ์ ํธ | ์์ | ๊ณต์ ํด๋ก |
| ์์ด์ด ์ | 2 (TX, RX) | 4 (MOSI, MISO, SCK, SS/CS) + ์ฌ๋ ์ด๋ธ๋น 1 SS/CS |
| ๋ฐ์ดํฐ ์๋ | ๋ฎ์ | ๋์ |
| ์ ์ด์ค | ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ด์ค(๋ณต์กํ ์ํํธ์จ์ด๋ก ์ ์ด์ค ์๋ฎฌ๋ ์ด์ ๊ฐ๋ฅ) | ์ ์ด์ค |
| ์ค๋ฅ ๊ฐ์ง | ํจ๋ฆฌํฐ ๋นํธ (์ ํ ์ฌํญ) | ์์ (์ํํธ์จ์ด ๊ตฌํ ํ์) |
| ์ฅ์น ์ | 2๊ฐ (์ ๋์ ) | ๋ค์ (๋ง์คํฐ-์ฌ๋ ์ด๋ธ) |
| ๋ณต์ก์ฑ | ๋ ๊ฐ๋จํจ | ๋ ๋ณต์กํจ |
| ๊ฑฐ๋ฆฌ | ๋ ๊น | ๋ ์งง์ |
์ฌ๋ฐ๋ฅธ ํ๋กํ ์ฝ ์ ํ
UART์ SPI ์ค ์ ํ์ ํน์ ์์ฉ ํ๋ก๊ทธ๋จ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋ค์ ์์๋ฅผ ๊ณ ๋ คํ์ญ์์ค:- ๋ฐ์ดํฐ ์๋: ๊ณ ์ ๋ฐ์ดํฐ ์ ์ก์ด ํ์ํ ๊ฒฝ์ฐ SPI๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ์ ํ์ ๋๋ค.
- ๊ฑฐ๋ฆฌ: ์ฅ๊ฑฐ๋ฆฌ์ ๊ฒฝ์ฐ UART๊ฐ ๋ ์ ํฉํฉ๋๋ค.
- ์ฅ์น ์: ๋จ์ผ ๋ง์คํฐ์ ์ฌ๋ฌ ์ฅ์น๊ฐ ํต์ ํด์ผ ํ๋ ๊ฒฝ์ฐ SPI๊ฐ ์ ํธ๋ฉ๋๋ค.
- ๋ณต์ก์ฑ: ๋จ์์ฑ์ด ์ฐ์ ์ด๋ผ๋ฉด UART๊ฐ ๊ตฌํํ๊ธฐ ๋ ์ฝ์ต๋๋ค.
- ์ค๋ฅ ๊ฐ์ง: ์ค๋ฅ ๊ฐ์ง๊ฐ ์ค์ํ ๊ฒฝ์ฐ, ํจ๋ฆฌํฐ ๋นํธ๊ฐ ์๋ UART๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ SPI์ ๋ํ ์ํํธ์จ์ด์์ ์ค๋ฅ ๊ฒ์ฌ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์จ์ด: ์ผ๋ถ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ๋ ํ ํ๋กํ ์ฝ ๋๋ ๋ค๋ฅธ ํ๋กํ ์ฝ์ ๋ํ ์ง์์ด ์ ํ์ ์ผ ์ ์์ต๋๋ค. ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
์๋ฅผ ๋ค์ด, ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ๊ฐ ๋จ๊ฑฐ๋ฆฌ์์ ๋จ์ผ ์ผ์๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ๋ ๊ฐ๋จํ ์ผ์ ์์ฉ ํ๋ก๊ทธ๋จ์์๋ SPI๊ฐ ๋ ๋์ ์๋ ๋๋ฌธ์ ๋ ๋์ ์ต์ ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ๊ฐ ๋๋ฒ๊น ๋ชฉ์ ์ผ๋ก ์ฅ๊ฑฐ๋ฆฌ์์ ์ปดํจํฐ์ ํต์ ํด์ผ ํ๋ ๊ฒฝ์ฐ UART๊ฐ ๋ ์ ์ ํ ๊ฒ์ ๋๋ค.
๊ณ ๊ธ ๊ณ ๋ ค ์ฌํญ
I2C (Inter-Integrated Circuit)
์ด ๊ธ์์๋ UART์ SPI์ ์ด์ ์ ๋ง์ถ์ง๋ง, ๋ ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ์ง๋ ฌ ํต์ ํ๋กํ ์ฝ์ธ I2C(Inter-Integrated Circuit)๋ ์ธ๊ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. I2C๋ ๋์ผํ ๋ฒ์ค์์ ์ฌ๋ฌ ๋ง์คํฐ ๋ฐ ์ฌ๋ ์ด๋ธ ์ฅ์น๋ฅผ ์ง์ํ๋ 2์ ์ ํ๋กํ ์ฝ์ ๋๋ค. ์ด๋ ํ๋ก ๊ธฐํ์ ์ง์ ํ๋ก ๊ฐ ํต์ ์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. I2C๋ SPI์ ๋ฌ๋ฆฌ ์ฃผ์ ์ง์ ์ ์ฌ์ฉํ์ฌ ๋๊ท๋ชจ ์ฅ์น ๋คํธ์ํฌ๋ฅผ ๋จ์ํํฉ๋๋ค.
TTL vs. RS-232
UART๋ฅผ ์ฌ์ฉํ ๋, TTL(Transistor-Transistor Logic)๊ณผ RS-232 ์ ์ ๋ ๋ฒจ ๊ฐ์ ์ฐจ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. TTL ๋ก์ง์ ๋ ผ๋ฆฌ์ ๋ฎ์๊ณผ ๋์์ ๊ฐ๊ฐ 0V์ 5V(๋๋ 3.3V)๋ก ํํํฉ๋๋ค. ๋ฐ๋ฉด RS-232๋ ยฑ12V์ ์ ์์ ์ฌ์ฉํฉ๋๋ค. TTL UART๋ฅผ RS-232 UART์ ์ง์ ์ฐ๊ฒฐํ๋ฉด ์ฅ์น๊ฐ ์์๋ ์ ์์ต๋๋ค. TTL๊ณผ RS-232 ์ ์ ๋ ๋ฒจ ๊ฐ์ ๋ณํ์๋ ๋ ๋ฒจ ์ํํฐ(์: MAX232 ์นฉ)๊ฐ ํ์ํฉ๋๋ค.
์ค๋ฅ ์ฒ๋ฆฌ
UART ๋ฐ SPI๋ ์ค๋ฅ ๊ฐ์ง ๋ฉ์ปค๋์ฆ์ด ์ ํ์ ์ด๋ฏ๋ก ์ํํธ์จ์ด์์ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ธฐ์ ๋ก๋ ์ฒดํฌ์ฌ, ์ํ ์ค๋ณต ๊ฒ์ฌ(CRC) ๋ฐ ํ์์์ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค.
๊ฒฐ๋ก
UART์ SPI๋ ์๋ฒ ๋๋ ์์คํ ๋ฐ ๊ทธ ์ด์์ ํ์์ ์ธ ์ง๋ ฌ ํต์ ํ๋กํ ์ฝ์ ๋๋ค. UART๋ ๋จ์์ฑ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ฌ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ๋ฅผ ์ปดํจํฐ ๋ฐ ๊ธฐํ ์ฅ์น์ ์ฅ๊ฑฐ๋ฆฌ๋ก ์ฐ๊ฒฐํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. SPI๋ ์ผ์, ๋ฉ๋ชจ๋ฆฌ ์นด๋ ๋ฐ ๋์คํ๋ ์ด์ ๊ฐ์ ๋จ๊ฑฐ๋ฆฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ณ ์ ํต์ ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ ํ๋กํ ์ฝ์ ์๋ฆฌ, ์ฅ์ ๋ฐ ๋จ์ ์ ์ดํดํ๋ฉด ๋ค์ ์๋ฒ ๋๋ ์์คํ ๋๋ ์ ์ ํ๋ก์ ํธ๋ฅผ ์ค๊ณํ ๋ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค. ๊ธฐ์ ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ด๋ฌํ ์ง๋ ฌ ํต์ ๋ฐฉ๋ฒ์ ์ ์ฉ๋ ๋ฐ์ ํ ๊ฒ์ ๋๋ค. ์ง์์ ์ธ ์ ์๊ณผ ํ์ต์ ์์ง๋์ด์ ์ทจ๋ฏธ๊ฐ ๋ชจ๋ ์ด๋ฌํ ํ๋กํ ์ฝ์ ์ต๋ํ ํ์ฉํ ์ ์๋๋ก ๋ณด์ฅํ ๊ฒ์ ๋๋ค.